            # -*- coding: utf-8 -*-
'''
Created on 24/02/2012

@author: Caio Alves
'''
from classificados.models import Categoria, Cidade, SubCategoria, Usuario, Anuncio, Imagem, Pacote, Blog, Contrato, Proibidas, Regra 
from django.contrib import admin
#from django.db import models
#from django.forms.models import ModelForm
from classificados.forms import AnuncioForm
from PIL import Image
from settings import MEDIA_ROOT#, MEDIA_URL

class CategoriaAdmin(admin.ModelAdmin):
    list_filter = ['nome']
    search_fields = ['nome']
    date_hierarchy = 'dataCadastro'

class SubCategoriaAdmin(admin.ModelAdmin):
    list_filter = ['nome','categoria']
    search_fields = ['nome']
    date_hierarchy = 'dataCadastro'

class CidadeAdmin(admin.ModelAdmin):
    list_filter = ['estado']
    search_fields = ['nome']
    
class RegrasAdmin(admin.ModelAdmin):
    search_fields = ['palavra']
    list_filter = ['acao']
    list_display = ['palavra','acao','prefixo','entreLetras','sufixo']

class RegrasInline(admin.StackedInline):
    model = Regra
    extra = 2
    
class ProibidasAdmin(admin.ModelAdmin):
    search_fields = ['palavra']
    list_filter = ['acao']
    list_display = ['palavra','acao']
    inlines = [RegrasInline]

class PacoteAdmin(admin.ModelAdmin):
    list_filter = ['preco']
    list_display = ['__unicode__','preco']
    search_fields = ['id']
    
class BlogAdmin(admin.ModelAdmin):
    list_filter = ['titulo','user']
    list_display = ['titulo','user']
    search_fields = ['titulo']
    
class ContratoAdmin(admin.ModelAdmin):
    list_filter = ['pacote','anuncio','blog','semanas','dataSaida','valor']
    list_display = ['pacote','anuncio','blog','semanas','dataSaida','valor']
    search_fields = ['anuncio']
    date_hierarchy = 'dataCadastro'

class UsuarioAdmin(admin.ModelAdmin):
    list_filter = ['cidade','status']
    search_fields = ['nome']
    date_hierarchy = 'dataCadastro'
    
    def save_model(self, request, obj, form, change):
        """Metodo declarado para criar miniatura da imagem depois de salvar"""
        super(UsuarioAdmin, self).save_model(request, obj, form, change)

        if 'foto' in form.changed_data:
            extensao = obj.foto.name.split('.')[-1]
            obj.thumbnail = '/users/thumbnail/%s.%s'%(obj.id, extensao)

            miniatura = Image.open(obj.foto.path)
            miniatura.thumbnail((150,85), Image.ANTIALIAS)
            string = MEDIA_ROOT+''+obj.thumbnail.name
            miniatura.save(string)

            obj.save()



class AnuncioAdmin(admin.ModelAdmin):
    form = AnuncioForm
#    prepopulated_fields = {"categ": ("categoria",)}
    fieldsets = [
                 ('Dados Principais',{'fields':(['descricao','usuario','categoria','subcategoria','cidade'])}),
                 ('Dados Adicionais',{'fields':(['detalhes','tags','foto','status','preco'])})
                 ]
    list_filter = ['categoria__nome','subcategoria__nome','cidade','dataCadastro', 'status', 'modified']
    list_display = ['descricao','categoria','subcategoria','usuario','cidade','dataCadastro','foto_anuncio','quantidadeAcesso']
    search_fields = ['descricao']
    date_hierarchy = 'dataCadastro'
    form = AnuncioForm
    
    
    def foto_anuncio(self, obj):
        if obj.thumbnail:
            return u'<img src=/media/%s>' % (obj.thumbnail)
    foto_anuncio.allow_tags = True
    
    def save_model(self, request, obj, form, change):
        """Metodo declarado para criar miniatura da imagem depois de salvar"""
        super(AnuncioAdmin, self).save_model(request, obj, form, change)

        if 'foto' in form.changed_data:
            extensao = obj.foto.name.split('.')[-1]
            obj.thumbnail = 'anuncio/%s/%s/%s.%s'%(
               obj.categoria.id,obj.subcategoria.id,obj.id, extensao)

            miniatura = Image.open(obj.foto.path)
            miniatura.thumbnail((150,100), Image.ANTIALIAS)
            string = MEDIA_ROOT+''+'/'+obj.thumbnail.name
            miniatura.save(string)

            obj.save()
    
    """def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "subcategoria":
            kwargs["queryset"] = SubCategoria.objects.filter(categoria=self.fields['categoria'])
        return super(AnuncioAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)"""

admin.site.register(Categoria, CategoriaAdmin)
admin.site.register(SubCategoria, SubCategoriaAdmin)
admin.site.register(Cidade, CidadeAdmin)
admin.site.register(Usuario, UsuarioAdmin)
admin.site.register(Anuncio, AnuncioAdmin)
admin.site.register(Pacote, PacoteAdmin)
admin.site.register(Blog, BlogAdmin)
admin.site.register(Contrato, ContratoAdmin)
admin.site.register(Imagem)
admin.site.register(Proibidas, ProibidasAdmin)
admin.site.register(Regra, RegrasAdmin)
